(RAL 23) Orbit - A Unified Simulation Framework for Interactive Robot Learning Environments
(RAL 23) Orbit - A Unified Simulation Framework for Interactive Robot Learning Environments
望秋弥茂Abstract 摘要
[!abstract] 摘要
- Orbit(现名IsaacLab)是一个由NVIDIA Isaac Sim驱动的模块化框架,用于机器人学习。
- 提供了逼真场景(photo-realistic scenes)和高保真刚体与软体模拟(high-fidelity rigid and deformable body simulation)。
- 包含多种难度的基准任务(benchmark tasks),如单阶段橱柜开启、叠衣服到多阶段任务如房间重组。
- 支持多种观测和动作空间(observations and action spaces),包括固定臂和移动机械手,以及基于物理的传感器和运动生成器。
- 利用GPU并行化,几分钟内就可以训练强化学习策略或收集大型演示数据集。
- 开源框架,包含16个机器人平台、4种传感器模式、10个运动生成器、20多个基准任务和4个学习库的包装器。
I. Contribution 主要贡献
[!Success] 主要贡献
- 设计了一个统一的、模块化的开源框架,利用最新的模拟技术,实现逼真场景和高保真物理模拟。
- 提供了包含不同机器人和传感器模型的 “即插即用”(batteries-included)体验,降低了使用框架的入门障碍。
- 包括一系列标准化任务,用于基准测试目的,涵盖了刚体和软体操作以及运动环境。
- 通过实验展示了模拟器在刚体和软体模拟方面的准确性,并展示了四足机器人ANYmal的运动策略 Sim-to-Real Transfer。
II. Relative Work 相关工作
[!example] Physics Engine (物理引擎)
- 增加物理模拟环境的复杂性和现实感对于推进机器人研究至关重要。
- 包括改进接触动力学、更好地处理非凸几何体(如螺纹)的碰撞、软体的稳定求解器和高模拟吞吐量(simulation throughput)。
- 框架[2]、[5]使用MuJoCo[17]或Bullet[18]主要关注刚体操作任务。物理引擎基于CPU,需要CPU集群来实现大规模并行化[13]。
- 软体的框架[4]、[8]主要采用Bullet[18]或FleX[19],这些使用基于粒子的动力学进行软体和布料模拟。
- SofaGym[20],一个特别针对软机器人的RL框架,展示了使用有限元方法(FEM)进行变形模型的好处。
- ORBIT旨在通过提供集成的机器人框架来弥合这一差距,通过PhysX SDK 5[21]支持刚体和软体模拟。
- 相比其他引擎,PhysX SDK 5具有基于GPU硬件加速、带符号的距离场(SDF)碰撞检查[22],以及更稳定的基于FEM求解器[23]、[24]。
[!example] Sensor Simulation (传感器模拟)
- 现有的框架[2]、[5]、[13]使用传统的光栅化技术,这限制了生成图像的逼真度。
- 近期技术[25](Optix光线追踪引擎)模拟光线与物体纹理的物理正确交互。
- 这些方法有助于捕捉透明度和反射等精细视觉属性,从而有望弥合Sim-to-Real Gap。
- 尽管最近的框架[7]、[11]、[12]包括基于物理的渲染器,但它们主要支持基于相机的传感器(RGB、深度)。
- 对于某些需要范围传感器(如激光雷达)的移动机器人应用来说是不够的。
- 利用NVIDIA Isaac Sim中的光线追踪技术,ORBIT支持所有这些模态,并包括API以获取其他信息,如语义注释。
[!example] Scene Designing and Asset Handling (场景设计与资源管理)
- 框架支持通过程序化[1]、[2]、[11]、通过网格扫描[6]、[7]或通过游戏引擎风格的界面[9]、[26]创建场景。
- 网格扫描简化了生成大量场景的过程,但通常存在几何伪影和照明问题。
- 程序化生成允许利用对象数据集创建多样化的场景。
- 尽管Isaac Sim主要关注基于GUI的场景设计,但作者选择不限制方法,并在其界面上构建以支持场景设计的所有三种方法。
III. ORBIT: Abstraction and Interface Design 抽象架构和接口设计
[!question] 现实世界复杂性
- 传感器更新频率不同:在现实世界中,不同的传感器以不同的频率更新数据。
- 动作应用时间尺度不同:根据控制架构的不同,动作可能在不同的时间尺度上应用。
- 系统延迟和噪声:系统中存在未建模的延迟和噪声源。
[!todo] ORBIT框架的设计考虑
- 接口和抽象:Orbit框架精心设计了其接口和抽象,以支持这些功能。
- 执行器和噪声模型:允许包含执行器和噪声模型,以弥合模拟与现实之间的差距。
[!example] World (世界)
- 定义: 类似于现实世界,定义了一个世界,包含机器人、传感器、物体(静态或动态)和可视化标记。
- 设计方法: 世界可以通过脚本(程序化)、扫描网格或通过Isaac Sim的游戏化GUI交互式设计,也可以是这些方法的组合。
- 机器人: 作为交互的体现,由关节、执行器模型和低级关节控制器组成。设计接口以支持同一类别中的多种机器人。
- 传感器: 包括本体感知(proprioceptive)或外部感知(exteroceptive)传感器,可能存在于机器人上或外部(如第三人称摄像机)。ORBIT 利用 Isaac Sim 支持各种基于物理的(如范围、力和接触传感器)和基于渲染的(如RGB、深度、法线)传感器,并通过一个通用接口简化它们在运行时的创建和配置。
- 对象: 作为世界中的被动实体,支持对其纹理和物理属性(如摩擦材料和关节参数)的随机化。
- 可视化标记: 允许以编程方式向模拟器的GUI添加各种基本形状,如轴、球体和网格。
[!example] Agent (代理)
- 定义: 代理指引导具身系统的决策过程(“智能”)。
- 模块化: 与机器人操作系统ROS的模块化类似,大多数机器人学习框架通常只关注环境(或MDP)的定义。ORBIT中的代理由形成计算图的各种节点组成,这些节点之间交换信息。
- 节点类型: 主要有两种类型的节点:
- 基于感知的,即它们将输入处理成另一种表示形式(如将RGB-D图像转换为点云/TSDF);
- 基于动作的,即它们将输入处理成动作命令(如将任务层面命令转换为关节命令)。
- 信息流: 目前,节点之间的信息流通过Python同步进行,避免了服务-客户端协议的数据交换开销。
[!example] Learning Task and Agent (学习任务和代理)
- 任务逻辑: 帮助指定代理的目标,计算评估代理性能的指标(奖励),并管理重置。
- 模块化设计: 使相同的世界定义可以用于不同的任务,类似于现实世界中通过外部奖励信号指定任务。
- 任务定义: 可能还包括代理的不同节点。通过在代理的计算图上进行图切割,可以形式化地考虑特定节点的学习过程。
IV. ORBIT: Feature 特点
[!done] Robots (机器人)
- 支持的机器人平台:
- Orbit框架支持4种移动平台(包括一个全方位驱动基座和三个四足机器人)
- 7个机械臂(两个6-DoF和五个7-DoF)
- 以及6种末端执行器(四个平行钳爪和两个机器手)
- 复杂机器人系统的构建:提供了工具来组合这些关节机构,形成复杂的机器人系统,例如腿部移动操纵器。
- 灵活性:提供了丰富的机器人平台选择,每个平台都可以在世界中进行切换。
[!done] I/O Devices (输入/输出设备)
- 实时遥操作界面:定义了与外围控制器的接口,使用这些接口可以通过I/O设备实时遥操作机器人。
- 数据收集与调试:该界面不仅可以用于收集演示数据,还可以用于调试任务设计。
- 支持的设备:目前,Orbit包括对键盘、游戏手柄(Xbox控制器)和Spacemouse的支持。
[!done] Motion Generators (运动生成器)
- 高级动作转化为低级命令:运动生成器将高级动作转化为低级命令,通过将输入动作视为参考跟踪信号。
- **逆运动学(IK)**:例如,逆运动学将命令解释为期望的末端执行器姿态,并计算所需的关节位置。
- 运动生成器的应用:在任务空间中使用这些控制器,已被证明有助于机器人操作策略的Sim-to-Real Transfer。
- 具体实现 Implementation:
- GPU-Based:
- IK: differential IK 微分逆运动学
- OSC: operational-space control 操作空间控制
- joint-level control 关节层面控制
- CPU-Based (SOTA model-based planners):
- RMP-Flow: for fixed-arm manipulators 固定机械臂操作
- OCS2: for whole-body control of mobile manipulators 移动机械臂整体控制
[!done] Rigid- and Deformable-body Tasks (刚体和软体任务)
- 任务套件:Orbit包含了一套用于刚体和软体操作的任务,以及足式机器人控制和手部灵巧操作。
- 基准测试:这些任务不仅作为机器人研究的基准,而且作为用户轻松设计新任务的示例。
- 任务扩展:虽然其中一些任务在之前的研究中已经存在,但Orbit通过框架的接口增强了它们,简化了在不同机器人、对象、运动生成器、观测和领域随机化之间进行切换的过程。
- 移动机械手操作任务:Orbit还扩展了固定臂机器人的操纵任务到移动机械臂。
- 技能多样性:当前的任务主要集中在一系列多样化的技能上,如抓取、旋紧、堆叠、推/拉、倾倒、折叠和行走等。
- 环境列表:网站上提供了一个完整且不断增长的环境列表。
V. Exemplar WorkFlows with ORBIT 工作流示范
[!Done] Reinforcement Learning (强化学习)
- 数据存储与转换:由于框架主要将数据存储为张量,需要将数据格式化并转换为不同学习框架的数据类型。
- 支持的RL框架:提供了与rl-games、RSL-rl和stable-baselines-3不同RL框架的包装器(Wrapper),使用户灵活使用不同的算法进行研究。
- 实验示例:展示了使用PPO算法在不同RL框架和动作空间中训练==Franka-Reach==和==Franka-Cabinet-Opening==任务的情况。
- RSL-rl and rl-games: GPU Optimization, training speed: 50,000–75,000 FPS with 2048 environments
- stable-baselines3: No Optimization, training speed: 6,000–18,000 FPS
[!Done] Teleoperation and Imitation Learning (遥操作和模仿学习)
- 数据收集:Orbit提供了数据收集界面,可用于通过I/O设备与环境交互,并收集类似于roboturk[38]的数据。
- 存储与训练:支持以robomimic[39]所需的格式存储数据,以训练各种模仿学习模型。
- 实验示例:展示了==Franka-LiftCube==任务的LfD
- 4种设置:fixed or random start and desired positions
- 每种设置收集2000条轨迹
- 使用Behavior Cloning (BC)以及BC with an RNN policy (BCRNN)对这些演示进行策略训练
[!Done] Motion Planning (运动规划)
- 手工制定策略:
- 为给定任务创建状态机,作为代理中的一个独立节点执行序列规划。
- 提供目标状态,如达到目标物体、关闭夹爪、与物体交互以及移动到下一个目标位置。
- 可以用于收集具有挑战性的任务(如布料操作)的专家演示。
- 交互式运动规划:
- 定义了一个系统节点,用于抓取生成、遥操作、任务空间控制以及运动预览。
- 用户可以通过GUI选择要抓取的对象,并预览由RMP控制器生成的可能抓取姿势和机器人运动序列。
[!Done] DEPLOYMENT ON REAL ROBOT (在真实机器人上部署)
- 实时控制和安全约束:在真实机器人上部署代理面临各种挑战,如处理实时控制和安全约束。
- 使用ZMQ:
- 使用ZMQ来发送从Orbit到运行Franka Emika机器人实时内核的计算机的关节命令。
- 使用五次插值器(quintic interpolator)从模拟器的60Hz关节指令上采样到1000 Hz,以便在机器人上执行
- ==Franka robot==的实验
- 两种实验配置:Franka Emika hand以及Allegro hand
- 每种配置都做三种任务
- teleoperation using a Spacemouse device 遥操作
- deployment of a state machine 状态机部署
- waypoint tracking with obstacle avoidance 避障路径点跟踪
- 使用ROS:
- 展示了如何将使用Orbit训练的策略导出并部署在机器人平台上,特别是ANYbotics的四足机器人ANYmal-D。
- 对足式机器人,完全在仿真中使用执行器网络[29]训练运动策略
- 四足机器人==ANYmal-D==的实验
- 训练鲁棒性:随机化基体质量(22±5 kg)并添加模拟随机推力。
- 奖励设计:使用接触报告(contact report)来获得接触力,并将其用于奖励设计。
- Sim-to-Real Transfer表明了模拟接触动力学的可行性及对ORBIT中contact-rich的任务的适用性。
[!Help] 模拟精度评估 (Evaluation of simulation accuracy)
- 评估挑战:定量测量物理求解器的精度是一项挑战,因为现实世界的物理特性变化很大,且往往未知。
- 先前方法:以前的框架通常通过执行相同的动作序列,然后定性地将模拟与现实世界进行比较[8], [10]。
- 软体模拟精度对比试验:
- 现实世界数据收集:使用了一个被固定住的、高度可变形的硅胶弹性梁,并在重力作用下收集其变形数据。
- 模拟场景设置:创建了一个相似场景,将软梁附加到刚性墙面上,并设置了与实际梁相同的材料属性(杨氏模量、密度和不可压缩性)。
- 结果比较:通过比较模拟数据与收集到的真实世界数据,作者观察到模拟数据中的阻尼振荡与真实世界数据非常接近。
- 精度展示:这一结果展示了求解器的精度,并表明了Orbit在Sim-to-Real的软体操作任务(deformable body manipulation)中的潜力。
[!Help] 模拟吞吐量比较 (Comparison of simulation throughput)
- 为了确保公平比较,调整了环境,使其具有相同的动作空间、模拟频率和控制采样。
- 评估是在配备16核AMD Ryzen 5950X、64 GB RAM和NVIDIA 3090 RTX的工作站上执行的。
- CPU和GPU加速:
- 基于CPU的向量化随着环境数量的增加显示出吞吐量的增长,但在大约200-300个环境时,由于内存不足,程序崩溃。
- 基于GPU的并行化可以更好地扩展到更多环境,并且在刚体环境中实现了大约10倍的吞吐量,在软体环境中实现大约3倍的吞吐量。
- 刚体任务的吞吐量对比试验:
- 在刚体任务中,Orbit的表现与IsaacGym相当,因为它们都使用相同的物理引擎。
- 与GPU模拟加速的框架相比,基于CPU向量化的框架受到可用内存的限制,可扩展性较差。
- 软体任务的吞吐量对比试验:
- 在软体任务中,Orbit在使用PBD求解器[42]时,比DEDO框架获得了3倍的吞吐量。
- 增加布料网格中的节点或点数(pts)会对性能产生负面影响,过高的分辨率会降低模拟的吞吐量。
VI. Discussion 讨论
[!done] 讨论 (Discussion)
- Orbit框架的提出:提出Orbit,一个互动且直观的框架,旨在简化环境设计,轻松指定任务,降低门槛。
- 基于Isaac Sim:
- Orbit通过Isaac Sim开发了最新SOTA的仿真能力,并进一步扩展将不同的执行器和传感器噪声模型纳入仿真。
- 以及在不同的工作频率下先进的传感器、执行器和运动生成器。
- 全面的机器人平台和传感器支持:
- 提供了包括不同机器人平台、传感器、基于CPU和GPU的运动生成器。
- 以及“即插即用”(batteries-included)的基准任务。
- 性能提升:通过实验,展示了Orbit与其它框架的性能相比
- 在任务上取得了显著的吞吐量提升。
- 并展示了其促进Sim-to-Real Transfer的潜力。
VII. Future Work 未来工作
[!todo] 未来工作 (Future Work)
- 渲染速度提升:
- 尽管Orbit框架能够以高达125,000 FPS的速率模拟物理
- 但相机渲染目前受限于在RTX 3090上为10个640×480图像的相机提供总共270 FPS的渲染能力
- 正通过基于GPU的加速积极提高渲染速度
- 模拟精度的定量研究:
- 虽然我们的实验已经证明了刚体接触建模和软体的有限元方法(FEM)的有效性
- 但对整个模拟器(包括渲染、传感器和物理)的保真度进行定量研究仍是未来探索的领域
- 软体操作研究:
- 由于实现快速准确的模拟和逼真的渲染存在困难,机器人研究,特别是在软体操作领域,很少使用Sim-to-Real的方法
- Orbit可以帮助解决这些挑战,并促进这些领域未解决研究问题的解答
- 框架增强计划:
- 包括集成触觉传感器(GelSight……)和六轴力-扭矩传感器
- 计划增加支持直接加载原生资源格式(如URDF和OBJ)而不仅仅是USD,以使框架更加通用和用户友好。